package basedatos;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import genericos.Conexion;
import genericos.Grid;
import genericos.Grid3;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import genericos.Grid4;
import genericos.Grid5;
import genericos.Grid6;
import genericos.Grid7;

/**
 *
 * @author aux_consultoria
 */
public class Requerimientos {

    //static Connection conn = null;
    //static String url = "jdbc:mysql://localhost:3306/";
    //static String dbName = "zianya";
    //static String driver = "com.mysql.jdbc.Driver";
    //static String[] userpass = Conexion.userpass();
    static Pool p = new Pool();
    /**
     * Método que devuelve la lista de explicaciones sobre los borrados de objetivos de colaborador
     * @return una lista de Grid7
     * @see Grid7
     */
    public static List<Grid7> Exp_ced() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.id,a.motivo,a.complemento,a.idcedula,c.nombre,d.nombre,a.idobjetivo,fecha from expcedula a, cedula b,usuarios c, direccion d where a.idcedula=b.id and b.usuario=c.id and a.ididireccion=d.id;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                g.setComplemento(rs.getString(3));
                g.setIdcedula(rs.getInt(4));
                g.setNombre(rs.getString(5));
                g.setDireccion(rs.getString(6));
                g.setIdobjetivo(rs.getInt(7));
                g.setFecha(rs.getString(8));

                /*System.out.println("Id: " + rs.getInt(1));
                System.out.println("Motivo: " + rs.getString(2));
                System.out.println("Complemento: " + rs.getString(3));
                System.out.println("Cédula: " + rs.getInt(4));
                System.out.println("Dirección" + rs.getInt(5));
                System.out.println("Objetivo: " + rs.getInt(6));
                System.out.println("Fecha: " + rs.getString(7));*/
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que obtiene los datos de una explicación de un objetivo de dirección borrado
 * @return Lista de Grid7
 * @see Grid7
 */
    public static List<Grid7> Exp_obj() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.id,a.motivo,a.complemento,b.nombre,a.fecha,c.nombre from expobjetivo a,direccion b, objdir c where a.iddireccion=b.id and a.idobjdir=c.idobjdir;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                g.setComplemento(rs.getString(3));
                //g.setIdcedula(rs.getInt(4));
                g.setDireccion(rs.getString(4));
                g.setFecha(rs.getString(5));
                g.setNomobjdir(rs.getString(6));

/*
                System.out.println("Id: " + rs.getInt(1));
                System.out.println("Motivo: " + rs.getString(2));
                System.out.println("Complemento: " + rs.getString(3));
                System.out.println("Dirección: " + rs.getInt(4));
                System.out.println("Fecha: " + rs.getString(5));
                System.out.println("Objetivo: " + rs.getInt(6));
*/
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que devuelve la explicación resultante de borrar una táctica del plan estratégico.
 * @return Lista de Grid7
 * @see Grid7
 */
    public static List<Grid7> Exp_tac() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.id,a.motivo,a.complemento,c.nombre,a.fecha,c.nombre from exptac a, usuarios b, tactica c where a.idtac=c.idtac and b.id=a.idusuario;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                g.setComplemento(rs.getString(3));
                //g.setIdcedula(rs.getInt(4));
                g.setNomtac(rs.getString(4));
                g.setFecha(rs.getString(5));
                g.setNombre(rs.getString(6));

/*
                System.out.println("Id: " + rs.getInt(1));
                System.out.println("Motivo: " + rs.getString(2));
                System.out.println("Complemento: " + rs.getString(3));
                System.out.println("Táctica: " + rs.getInt(4));
                System.out.println("Fecha: " + rs.getString(5));
                System.out.println("Usuario: " + rs.getInt(6));
*/
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que enumera los cédulas de los directivos de la empresa.
 * @return Lista de Grid7
 * @see Grid7
 */
    public static List<Grid7> Puest_NomDir() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.puesto,a.nombre,c.id from usuarios a,cedula c where c.puesto=a.puesto and nivel=2;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                System.out.println(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                System.out.println(rs.getString(2));
                g.setIdcedula(rs.getInt(3));
                System.out.println(rs.getInt(3));
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(lista));
        return lista;
    }
/**
 * Lista de los mandos medios de la empresa.
 * @return Lista de tipo Grid7
 */
    public static List<Grid7> Puest_NomMM() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.puesto,a.nombre,b.id from usuarios a, cedula b where nivel=3 and a.puesto=b.puesto  and a.id=b.usuario";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                System.out.println(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                System.out.println(rs.getString(2));
                g.setIdcedula(rs.getInt(3));
                System.out.println(rs.getInt(3));
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Lista de los colaboradores de la empresa.
 * @return Lista de tipo Grid7
 * @see Grid7
 */
    public static List<Grid7> Puest_NomCol() {
        List<Grid7> lista = new ArrayList<Grid7>();
        String sql = "select a.puesto,a.nombre,b.id from usuarios a, cedula b where nivel=4 and a.puesto=b.puesto  and a.id=b.usuario";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid7 g = new Grid7();
                g.setId(rs.getInt(1));
                System.out.println(rs.getInt(1));
                g.setMotivo(rs.getString(2));
                System.out.println(rs.getString(2));
                g.setIdcedula(rs.getInt(3));
                System.out.println(rs.getInt(3));
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que devuelve la cédula de un usuario director 
 * @param dir dirección a la que pertenece
 * @return id de la cédula del director
 */
    public static int ceduladir(int dir) {
        int ced = 0;
        String sql = "select c.id from usuarios a,dependencia b,cedula c where a.id=c.usuario and a.nivel= 2 and a.puesto=b.idpuesto and b.dep=?;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, dir);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                ced = rs.getInt(1);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println("" + ced);
        return ced;
    }
/**
 * Método que obtiene el id de cédula de la persona que tiene el turno para las tácticas
 * @return id de la cédula.
 */
    public static int cedturno() {
        int ced = 0;
        String sql = "select c.id from usuarios a,direccion b,cedula c where a.id=c.usuario a.puesto=c.puesto and a.nivel= 2 and b.turno=1 and b.id=(select dep from dependencia where idpuesto=a.puesto);";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                ced = rs.getInt(1);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return ced;
    }

    /**
     * Suma de los logros de una cédula de colaboradores.
     *
     * @param cedula id de la cédula a revisar.
     * @param trim id del trimestre actual.
     * @return entero que representa la suma del total de su cédula.
     */
    public static int datcedulacol(int cedula, int trim) {
        int total = 0;
        String sql = "select SUM(logro) from objcol where cedula=? and trimestre=? and estado='Terminado' || estado='No Terminado'; ";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, cedula);
            pst.setInt(2, trim);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                total = rs.getInt(1);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        Cambiar.valorcedula(cedula, total);
        System.out.println(total);
        return total;
    }
/**
 * Lista de tácticas que se tienen por revisar, todas están en revisión
 * @param plan id del plan
 * @return Lista de tipo Grid con los datos de las tácticas.
 * @see Grid
 */
    public static List<Grid> tacticasporA(int plan) {
        List<Grid> lista = new ArrayList<Grid>();
        //int trim=Seleccion.calculatrimestre();
        String sql = "select idtac,nombre,descripcion,peso,cumple,resultado,logro from tactica where plan=? and estado = 'En Revisión' ;";
        PreparedStatement pst = null;
        Connection conn = null;


        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, plan);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid dom = new Grid();
                dom.setId(rs.getInt(1));
                System.out.println("id: " + dom.getId());
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setPeso(rs.getInt(4));
                dom.setCumple(rs.getInt(5));
                dom.setRes(rs.getString(6));
                dom.setLogro(rs.getInt(7));

                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Lista de tácticas que se pueden modificar y han sido aceptadas.
 * @param plan id del plan a revisar
 * @return Lista de Tipo GRID con los datos de las tácticas.
 */
    public static List<Grid> tacticasporM(int plan) {
        List<Grid> lista = new ArrayList<Grid>();
        //int trim=Seleccion.calculatrimestre();
        String sql = "select idtac,nombre,descripcion,peso,cumple,resultado,logro from tactica where plan=? and estado = 'Inscrito' ;";
        PreparedStatement pst = null;
        Connection conn = null;


        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, plan);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid dom = new Grid();
                dom.setId(rs.getInt(1));
                System.out.println("id: " + dom.getId());
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setPeso(rs.getInt(4));
                dom.setCumple(rs.getInt(5));
                dom.setRes(rs.getString(6));
                dom.setLogro(rs.getInt(7));
                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
   
/**
 * Método que obtiene los objetivos de una dirección a aceptar
 * @param direccion id de la dirección
 * @return Lista de tipo Grid
 * @see Grid
 */
    public static List<Grid> objdireccionporA(int direccion) {
        List<Grid> lista = new ArrayList<Grid>();
        int trim = Seleccion.calculatrimestre();
        String sql = "select a.idobjdir,a.nombre,a.descripcion,a.idtac,a.peso,a.cumple,a.resultado,a.logro,b.nombre from objdir a, tactica b where a.estado='En Revisión' and a.idtac=b.idtac and trimestre=? and direccion=? and aregistro=?";
        PreparedStatement pst = null;
        Connection conn = null;


        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, trim);
            pst.setInt(2, direccion);
            pst.setInt(3, new java.util.Date().getYear()+1900);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid dom = new Grid();
                dom.setId(rs.getInt(1));
                System.out.println("id dirA: " + dom.getId());
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLigav(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setRes(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setLiga(rs.getString(9));
                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que selecciona objetivos de dirección que ya están en el plan estratégico
 * @param direccion id de la dirección
 * @return Lista de tipo Grid
 * @see Grid
 */
    public static List<Grid> objdireccionporM(int direccion) {
        List<Grid> lista = new ArrayList<Grid>();
        int trim = Seleccion.calculatrimestre();
        String sql = "select a.idobjdir,a.nombre,a.descripcion,a.idtac,a.peso,a.cumple,a.resultado,a.logro,b.nombre from objdir a, tactica b where a.estado='Inscrito' and a.idtac=b.idtac and trimestre=? and direccion=? and aregistro=?;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, trim);
            pst.setInt(2, direccion);
            pst.setInt(3, new java.util.Date().getYear()+1900);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid dom = new Grid();
                dom.setId(rs.getInt(1));
                System.out.println("id dirM: " + dom.getId());
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLigav(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setRes(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setLiga(rs.getString(9));
                lista.add(dom);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * método que lista las direcciones existentes en una empresa que solicitaron revision
 * @return Lista de las direcciones existentes
 * @see Grid6
 * 
 */
    public static List<Grid6> direcciones() {
        List<Grid6> lista = new ArrayList<Grid6>();
        String sql = "select a.nombre,b.id,a.id from direccion a,cedula b,dependencia c,usuarios d where b.puesto=c.idpuesto and a.id in (select id from direccion) and d.id=b.usuario and d.nivel=2 and a.id=c.dep and b.solobdir=1 and b.aceptdir=0;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid6 dom = new Grid6();
                dom.setId(rs.getInt(3));
                dom.setTurno(rs.getInt(2));
                dom.setDireccion(rs.getString(1));
                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(lista));
        return lista;
    }
/**
 * Lista de las direcciones que ya tienen aceptados sus objetivos de dirección
 * @return Lista de tipo Grid6
 * @see Grid6
 */
    public static List<Grid6> direccionesM() {
        List<Grid6> lista = new ArrayList<Grid6>();
        String sql = "select a.nombre,b.id,a.id from direccion a,cedula b,dependencia c,usuarios d where b.puesto=c.idpuesto and a.id in (select id from direccion) and d.id=b.usuario and d.nivel=2 and a.id=c.dep and b.solobdir=0 and b.aceptdir=1";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid6 dom = new Grid6();
                dom.setId(rs.getInt(3));
                dom.setTurno(rs.getInt(2));
                dom.setDireccion(rs.getString(1));
                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que permite visualizar la dirección que tiene el turno de editar las tácticas
 * @return Lista de tipo Grid6
 * @see Grid6
 */
    public static List<Grid6> turnos() {
        List<Grid6> lista = new ArrayList<Grid6>();
        String sql = "select nombre,turno,id from direccion;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid6 dom = new Grid6();
                dom.setId(rs.getInt(3));
                dom.setTurno(rs.getInt(2));
                dom.setDireccion(rs.getString(1));
                lista.add(dom);

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }

    /**
     * Método que obtiene los objetivos de un director en base a su su dominio y
     * dirección a la que pertenece
     *
     * @param dominio id del dominio
     * @param direccion numero de dirección
     * @return Lista de tipo Grid4 con los datos de los objetivos del director
     * @see Grid4
     */
    public static List<Grid4> objDirxDomDir(int direccion, int dominio) {
        List<Grid4> lista = new ArrayList<Grid4>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.idobjdir,a.nombre,a.descripcion,a.idtac,a.peso,a.cumple,a.resultado,a.logro,a.estado,a.trimestre,a.direccion,a.aregistro,b.nombre from objdir a, tactica b where direccion=? and a.estado!='Anulado' and b.idtac=a.idtac and a.idtac in (select idtac from tactica where dominio=?);";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, direccion);
            pst.setInt(2, dominio);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid4 dom = new Grid4();

                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setEstado(rs.getString(9));
                dom.setTrimestre(rs.getInt(10));
                dom.setDireccion(rs.getInt(11));
                dom.setAregistro(rs.getInt(12));
                dom.setVliga(rs.getString(13));
                lista.add(dom);
                /*System.out.println("1 Id objetivo de director: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Estado: "+rs.getString(9));
                 System.out.println("10 Trimestre: "+rs.getInt(10));
                 System.out.println("11 Dirección: "+rs.getInt(11));
                 System.out.println("12 Año de registro: "+rs.getInt(12));
                 System.out.println("12 Tactica: "+rs.getString(13)+"copia "+dom.getVliga() ); */
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Lista de objetivos de dirección asociados a un dominio
 * @param dominio id del dominio
 * @param cedula id de la cédula
 * @param puesto id del puesto
 * @return lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objDirxDom(int dominio, int cedula, int puesto) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.*, b.nombre from obdirector a,usuarios b,cedula c where a.objdir in (select idobjdir from objdir where idtac in(select idtac from tactica where dominio=?) and a.cedula=c.id and c.id=? and c.puesto=b.puesto and b.puesto=? and a.estado!='Anulado')";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, dominio);
            pst.setInt(2, cedula);
            pst.setInt(3, puesto);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();

                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                //dom.setVliga(rs.getString(16));
                lista.add(dom);
                /*     System.out.println("1 Id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        //System.out.println(lista);
        return lista;
    }
/**
 * Método que muestra los  objetivos de un mando medio relacionados a un dominio.
 * @param dominio id del dominio
 * @param cedula id de cédula
 * @param puesto id del puesto
 * @return Lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objMMxDom(int dominio, int cedula, int puesto) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.*, b.nombre from objmm a,usuarios b,cedula c where a.objdir in (select idobjdir from objdir where idtac in(select idtac from tactica where dominio=?) and a.cedula=c.id and c.id=? and c.puesto=b.puesto and b.puesto=? and a.estado!='Anulado');";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, dominio);
            pst.setInt(2, cedula);
            pst.setInt(3, puesto);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();

                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                //dom.setVliga(rs.getString(16));
                lista.add(dom);
                /*System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que devuelve los objetivos de colaborador en base aun dominio especifico
 * @param puesto id del puesto
 * @param dominio id del dominio
 * @param cedula id de la cédula
 * @return Lista de tipo Grid5
 */
    public static List<Grid5> objColxDom(int puesto, int dominio, int cedula) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "Select a.*,b.nombre from objcol a,usuarios b,cedula c where a.objefe in(select id from objmm where cedula=(select id from cedula where puesto=(select arriba from detpuesto where idpuesto=?)) and objdir in (select idobjdir from objdir where idtac in(select idtac from tactica where dominio=?))and a.cedula=c.id and c.id=? and c.puesto=b.puesto and a.estado!='Anulado')";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, puesto);
            pst.setInt(2, dominio);
            pst.setInt(3, cedula);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                System.out.println(rs.getInt(1));
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                // dom.setVliga(rs.getString(16));
                lista.add(dom);
                /*System.out.println("1 id: " + rs.getInt(1));
                System.out.println("2 Nombre de objetivo: " + rs.getString(2));
                System.out.println("3 Descripcion objetivo: " + rs.getString(3));
                System.out.println("4 Liga: " + rs.getInt(4));
                System.out.println("5 Peso: " + rs.getInt(5));
                System.out.println("6 Cumplimiento: " + rs.getInt(6));
                System.out.println("7 Resultado: " + rs.getString(7));
                System.out.println("8 Logro: " + rs.getInt(8));
                System.out.println("9 Comentario colaborador: " + rs.getString(9));
                System.out.println("10 Comentario jefe: " + rs.getString(10));
                System.out.println("11 Cedula: " + rs.getInt(11));
                System.out.println("12 Estado: " + rs.getString(12));
                System.out.println("13 Trimestre: " + rs.getInt(13));
                System.out.println("14 Año de registro: " + rs.getInt(14));
                System.out.println("15 Nombre de Colaborador: " + rs.getString(15));*/

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que obtiene los objetivos de un colaborador por trimestre
 * @param puesto id del puesto
 * @param cedula id de la cédula
 * @param trimestre numero de trimestre
 * @return Lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objColxTrim(int puesto, int cedula, int trimestre) {
        List<Grid5> lista = new ArrayList<Grid5>();
        java.util.Date d=new java.util.Date();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select c.*,b.nombre from objcol c,usuarios b where b.id=(select a.usuario from cedula a where a.id=c.cedula and a.puesto=?) and c.cedula=? and c.trimestre=? and (estado='Terminado' or estado ='No Terminado')and b.nivel=4 and c.aregistro=?;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, puesto);
            pst.setInt(2, cedula);
            pst.setInt(3, trimestre);
            pst.setInt(4, d.getYear()+1900);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();

                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /*System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que obtiene una lista de objetivos de un mando medio por trimestre
 * @param puesto id del puesto
 * @param cedula id de la cédula
 * @param trimestre numero de trimestre
 * @return Lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objMMxTrim(int puesto, int cedula, int trimestre) {
        List<Grid5> lista = new ArrayList<Grid5>();
        java.util.Date d=new java.util.Date();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select c.*,b.nombre from objmm c,usuarios b where b.id=(select a.usuario from cedula a where a.id=c.cedula and a.puesto=?) and c.cedula=? and c.trimestre=? and (estado='No Terminado' or estado ='Terminado') and b.nivel=3 and c.aregistro=?;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, puesto);
            pst.setInt(2, cedula);
            pst.setInt(3, trimestre);
            pst.setInt(4, d.getYear()+1900);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /*System.out.println("1 id: " + rs.getInt(1));
                System.out.println("2 Nombre de objetivo: " + rs.getString(2));
                System.out.println("3 Descripcion objetivo: " + rs.getString(3));
                System.out.println("4 Liga: " + rs.getInt(4));
                System.out.println("5 Peso: " + rs.getInt(5));
                System.out.println("6 Cumplimiento: " + rs.getInt(6));
                System.out.println("7 Resultado: " + rs.getString(7));
                System.out.println("8 Logro: " + rs.getInt(8));
                System.out.println("9 Comentario colaborador: " + rs.getString(9));
                System.out.println("10 Comentario jefe: " + rs.getString(10));
                System.out.println("11 Cedula: " + rs.getInt(11));
                System.out.println("12 Estado: " + rs.getString(12));
                System.out.println("13 Trimestre: " + rs.getInt(13));
                System.out.println("14 Año de registro: " + rs.getInt(14));
                System.out.println("15 Nombre de Colaborador: " + rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que obtiene los objetivos de un colaborador
 * @param puesto id del puesto
 * @param cedula id de la cédula
 * @param trimestre numero de trimestre
 * @return Lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objDirxTrim(int puesto, int cedula, int trimestre) {
        List<Grid5> lista = new ArrayList<Grid5>();
        java.util.Date d=new java.util.Date();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select c.*,b.nombre from obdirector c,usuarios b where b.id=(select a.usuario from cedula a where a.id=c.cedula and a.puesto=?) and c.cedula=? and c.trimestre=? and (estado='No Terminado' or estado ='Terminado') and b.nivel=2 and c.aregistro=?;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, puesto);
            pst.setInt(2, cedula);
            pst.setInt(3, trimestre);
            pst.setInt(4, d.getYear()+1900);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();

                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /*System.out.println("1 id: " + rs.getInt(1));
                System.out.println("2 Nombre de objetivo: " + rs.getString(2));
                System.out.println("3 Descripcion objetivo: " + rs.getString(3));
                System.out.println("4 Liga: " + rs.getInt(4));
                System.out.println("5 Peso: " + rs.getInt(5));
                System.out.println("6 Cumplimiento: " + rs.getInt(6));
                System.out.println("7 Resultado: " + rs.getString(7));
                System.out.println("8 Logro: " + rs.getInt(8));
                System.out.println("9 Comentario colaborador: " + rs.getString(9));
                System.out.println("10 Comentario jefe: " + rs.getString(10));
                System.out.println("11 Cedula: " + rs.getInt(11));
                System.out.println("12 Estado: " + rs.getString(12));
                System.out.println("13 Trimestre: " + rs.getInt(13));
                System.out.println("14 Año de registro: " + rs.getInt(14));
                System.out.println("15 Nombre de Colaborador: " + rs.getString(15));*/

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                conn.close();
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que muestra las tácticas del plan vigente
 * @param plan id del plan
 * @return tácticas en lista de tipo Grid
 * @see Grid
 */
    public static List<Grid> TacxPlanAn(int plan) {
        List<Grid> lista = new ArrayList<Grid>();
        String sql = "select idtac,nombre,descripcion,dominio,peso,cumple,resultado,logro from tactica where plan=? and estado ='Anulado';";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, plan);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid g = new Grid();
                g.setId(rs.getInt(1));
                g.setNombre(rs.getString(2));
                g.setDescripcion(rs.getString(3));
                g.setLigav(rs.getInt(4));
                g.setPeso(rs.getInt(5));
                g.setCumple(rs.getInt(6));
                g.setRes(rs.getString(7));
                g.setLogro(rs.getInt(8));
                lista.add(g);
                /* System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));*/

            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        //System.out.println(lista);
        return lista;
    }
/**
 * Método que da una lista de objetivos en base a su cédula Anulados
 * @param cedula id de la cédula
 * @return Lista de objetivos de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objColxCed(int cedula) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.*,b.nombre from objcol a,usuarios b where a.cedula=? and a.estado='Anulado' and b.nivel=4;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, cedula);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                System.out.println(rs.getInt(1));
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /* System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        System.out.println(lista);
        return lista;
    }
/**
 * Método que obtiene los objetivos de mandos medios por cedula Anulados
 * @param cedula id de cedula
 * @return lista de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objMMxCed(int cedula) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.*,b.nombre from objmm a,usuarios b where a.cedula=? and a.estado='Anulado' and b.nivel=3;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, cedula);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                System.out.println(rs.getInt(1));
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /* System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        //System.out.println(lista);
        return lista;
    }
/**
 * Método que obtiene los objetivos de un director en base a su cédula Anulados
 * @param cedula id de la cédula
 * @return Lista de tipo Grid5
 */
    public static List<Grid5> objdirxCed(int cedula) {
        List<Grid5> lista = new ArrayList<Grid5>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select a.*,b.nombre from obdirector a,usuarios b where a.cedula=? and a.estado='Anulado' and b.nivel=2;";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, cedula);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                System.out.println(rs.getInt(1));
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /*System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 Liga: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Comentario colaborador: "+rs.getString(9));
                 System.out.println("10 Comentario jefe: "+rs.getString(10));
                 System.out.println("11 Cedula: "+rs.getInt(11));
                 System.out.println("12 Estado: "+rs.getString(12));
                 System.out.println("13 Trimestre: "+rs.getInt(13));
                 System.out.println("14 Año de registro: "+rs.getInt(14));
                 System.out.println("15 Nombre de Colaborador: "+rs.getString(15));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        //System.out.println(lista);
        return lista;
    }
/**
 * Método que lista los objetivos anulados de una dirección 
 * @param direccion id de la dirección
 * @return Lista de tipo Grid4
 * @see Grid4
 */
    public static List<Grid4> objDirxDir(int direccion) {
        List<Grid4> lista = new ArrayList<Grid4>();
        //  String[][] datos = new String[objmmtotales(cedula,trim) + 1][11];
        String sql = "select c.idobjdir,c.nombre,c.descripcion,c.idtac,c.peso,c.cumple,c.resultado,c.logro,c.trimestre,c.direccion,c.aregistro,c.estado from objdir c where c.direccion=(select dep from dependencia where idpuesto=?) and estado='Anulado';";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, direccion);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid4 dom = new Grid4();
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setTrimestre(rs.getInt(9));
                dom.setDireccion(rs.getInt(10));
                dom.setAregistro(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                lista.add(dom);
                /* System.out.println("1 id: "+rs.getInt(1));
                 System.out.println("2 Nombre de objetivo: "+rs.getString(2));
                 System.out.println("3 Descripcion objetivo: "+rs.getString(3));
                 System.out.println("4 tactica: "+rs.getInt(4));
                 System.out.println("5 Peso: "+rs.getInt(5));
                 System.out.println("6 Cumplimiento: "+rs.getInt(6));
                 System.out.println("7 Resultado: "+rs.getString(7));
                 System.out.println("8 Logro: "+rs.getInt(8));
                 System.out.println("9 Trimestre: "+rs.getInt(9));
                 System.out.println("10 Direccion: "+rs.getInt(10));
                 System.out.println("11 Año de registro: "+rs.getInt(11));
                 System.out.println("11 Nombre colaborador: "+rs.getString(12));*/
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                //System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
        return lista;
    }
/**
 * Método que lista las direcciones de la empresa.
 * @return Lista de las direcciones.
 * @see Grid3
 * 
 */
    public static List<Grid3> Direcciones() {
        List<Grid3> lista = new ArrayList<Grid3>();
        String sql = "select id,nombre from direccion";
        PreparedStatement pst = null;
        Connection conn = null;
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grid3 g = new Grid3();
                g.setCedula(rs.getInt(1));
                //System.out.print(rs.getInt(1));
                g.setNombre(rs.getString(2));
                //System.out.println(rs.getString(2));
                lista.add(g);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        } finally {
            try {
                pst.close();
                p.liberarConexion(conn);
                ////System.gc();
            } catch (SQLException ex) {
                System.out.println(ex);
            }
        }
         Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(lista));
        return lista;
    }
/**
 * Método que obtiene los objetivos por cédula y usuario vigentes
 * @param cedula id de la cédula
 * @param usuario id del usuario
 * @return Lista de objetivos de tipo Grid5
 * @see Grid5
 */
    public static List<Grid5> objxCed(int cedula, int usuario) {
        int nivel = Seleccion.nivelxced(cedula);
        List<Grid5> lista = new ArrayList<Grid5>();
        PreparedStatement pst = null;
        Connection conn = null;
       
        String sql = "";
        switch (nivel) {
            case 2:
                sql = "select c.*,b.nombre from obdirector c,usuarios b where c.cedula=? and b.id=?  and estado='Anulado';";

                break;

            case 3:
                sql = "select c.*,b.nombre from objmm c,usuarios b where c.cedula=? and b.id=?  and estado='Anulado';";

                break;

            case 4:
                sql = "select c.*,b.nombre from objcol c,usuarios b where c.cedula=? and b.id=?  and estado='Anulado';";

                break;
        }
        try {
            conn = p.extraerConexion();
            pst = conn.prepareStatement(sql);
            pst.setInt(1, cedula);
            pst.setInt(2, usuario);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {
                Grid5 dom = new Grid5();
                System.out.println(rs.getInt(1));
                dom.setId(rs.getInt(1));
                dom.setNombre(rs.getString(2));
                dom.setDescripcion(rs.getString(3));
                dom.setLiga(rs.getInt(4));
                dom.setPeso(rs.getInt(5));
                dom.setCumple(rs.getInt(6));
                dom.setResultado(rs.getString(7));
                dom.setLogro(rs.getInt(8));
                dom.setComcol(rs.getString(9));
                dom.setComjefe(rs.getString(10));
                dom.setCedula(rs.getInt(11));
                dom.setEstado(rs.getString(12));
                dom.setTrimestre(rs.getInt(13));
                dom.setAregistro(rs.getInt(14));
                dom.setNombreCol(rs.getString(15));
                lista.add(dom);
                /*System.out.println("1 id: " + rs.getInt(1));
                System.out.println("2 Nombre de objetivo: " + rs.getString(2));
                System.out.println("3 Descripcion objetivo: " + rs.getString(3));
                System.out.println("4 Liga: " + rs.getInt(4));
                System.out.println("5 Peso: " + rs.getInt(5));
                System.out.println("6 Cumplimiento: " + rs.getInt(6));
                System.out.println("7 Resultado: " + rs.getString(7));
                System.out.println("8 Logro: " + rs.getInt(8));
                System.out.println("9 Comentario colaborador: " + rs.getString(9));
                System.out.println("10 Comentario jefe: " + rs.getString(10));
                System.out.println("11 Cedula: " + rs.getInt(11));
                System.out.println("12 Estado: " + rs.getString(12));
                System.out.println("13 Trimestre: " + rs.getInt(13));
                System.out.println("14 Año de registro: " + rs.getInt(14));
                System.out.println("15 Nombre de Colaborador: " + rs.getString(15));*/
            }
            pst.close();
            p.liberarConexion(conn);
           
        } catch (SQLException ex) {
            System.out.println(ex);
        }
        System.out.println(lista);
        return lista;
    }
    public static void main(String[] args) {
       // Direcciones();
        Puest_NomDir();
    }
}
